/*
 * 此模块完成ZeroC ICE的启动和配置工作
 * 1. 配置Node。icegridnode --Ice.Config=xxx.ini
 * 2. 添加服务。icegridadmin --Ice.Config=xxx.ini -e "application add xxx.xml"
 * 3. 启动Glacier2服务。
 */
#ifndef TMICELOADER_H
#define TMICELOADER_H

#include <QObject>
#include <QtCore>

class TmIceLoader : public QObject
{
    Q_OBJECT
public:
    enum LoadAction{
        LOADER_APP_ADD=0,
        LOADER_APP_UPDATE,
        LOADER_APP_DEL
    };
    explicit TmIceLoader(QObject *parent = 0);
    ~TmIceLoader();

    // ICE
    void Init();
    void StartNode();
    void AdminAppXml(LoadAction a);
    void SendCmd(QString strCmd);
    void StartGlacier2();

    void StopAll();

private:
    QProcess* m_pProcNode;
    QProcess* m_pProcGlacier2;
    QProcess* m_pProcCmd;
    int m_nTmTick;
    QTimer* m_pTmTick;
signals:

public slots:
    void slot_tm_call();
    void slot_proc_cmd_out();
    void slot_proc_node_out();
    void slot_proc_glacier2_out();
};

#endif // TMICELOADER_H
